using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration;
using InseSoft.Models.Entities;

namespace InseSoft.Models.Mapping
{
    public class EmpresaMap : EntityTypeConfiguration<Empresa>
    {
        public EmpresaMap()
        {
            // Primary Key
            HasKey(t => t.Id);

            // Properties
            Property(t => t.Nombre)
                .IsRequired()
                .HasMaxLength(50);

            Property(t => t.Cedula)
                .HasMaxLength(20);

            Property(t => t.Direccion)
                .HasMaxLength(500);

            Property(t => t.Telefono)
                .HasMaxLength(20);

            Property(t => t.Fax)
                .HasMaxLength(20);

            Property(t => t.Email)
                .HasMaxLength(50);

            // Table & Column Mappings
            ToTable("Empresa");
            Property(t => t.Id).HasColumnName("Id").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
            Property(t => t.Nombre).HasColumnName("Nombre");
            Property(t => t.Cedula).HasColumnName("Cedula");
            Property(t => t.Direccion).HasColumnName("Direccion");
            Property(t => t.Telefono).HasColumnName("Telefono");
            Property(t => t.Fax).HasColumnName("Fax");
            Property(t => t.Email).HasColumnName("Email");
            Property(t => t.Utilidad).HasColumnName("Utilidad");
            Property(t => t.ImpuestoVenta).HasColumnName("ImpuestoVenta");
            Property(t => t.Activo).HasColumnName("Activo");

            Property(t => t.PrecioMolde).HasColumnName("PrecioMolde");
            Property(t => t.PrecioTinta).HasColumnName("PrecioTinta");
            Property(t => t.PrecioPositivo).HasColumnName("PrecioPositivo");
            Property(t => t.PrecioArte).HasColumnName("PrecioArte");
            Property(t => t.PrecioSolvente).HasColumnName("PrecioSolvente");
            Property(t => t.PrecioCorte).HasColumnName("PrecioCorte");
            Property(t => t.PrecioVelocidad).HasColumnName("PrecioVelocidad");
            Property(t => t.PrecioHoraImpresion).HasColumnName("PrecioHoraImpresion");
        }
    }
}
